package com.ftx.controller.test.algorithm;

import java.util.HashMap;
import java.util.Map;

/**
 * Created by tangwenru on 2023/3/28.
 * 滑动窗口
 */
public class SlidingWindow {

    //模板
    /* 滑动窗口算法框架 */
    void slidingWindow(String s, String t) {
        Map<Character, Integer> need = new HashMap<>();
        Map<Character, Integer> window = new HashMap<>();
        for (char c : t.toCharArray())
            need.put(c,need.getOrDefault(c,0)+1);
        int left = 0; // 双指针的左指针
        int right = 0; // 双指针的右指针
        int valid = 0; //表示窗口中满足 need 条件的字符个数
        while (right < s.length()) {
            // c 是将移入窗口的字符
            char c = s.charAt(right);
            // 右移窗口
            right++;
            // 进行窗口内数据的一系列更新
            //... todo 更改这里的内容

            /*** debug 输出的位置 ***/
            System.out.println("window: ["+left+","+ right+")");
            /********************/

            // 判断左侧窗口是否要收缩
//            while (window needs shrink) {
//                // d 是将移出窗口的字符
//                char d = s.charAt(left);
//                // 左移窗口
//                left++;
//                // 进行窗口内数据的一系列更新
//                //... todo 更改这里的内容
//            }
        }
    }
}
